Forum des exercices du projet Zuul

Exercice 7.2.1

  
 
Avatar anonfirstname2 anonlastname2
Exercice 7.2.1
par anonfirstname2 anonlastname2, mercredi 25 septembre 2019, 22:03
 

1) Comprendre une 1ère utilisation d'un objet Scanner dans la classe Parser de zuul-bad pour lire au clavier (scanner le clavier ligne par ligne) :

  • System.in désigne le clavier (comme System.out désigne l'écran)
  • Il faut créer un objet Scanner en lui passant le clavier en paramètre :
    Scanner vScan = new Scanner( System.in );
  • Pour pouvoir compiler, il faut indiquer au compilateur où se trouve la classe Scanner :
    import java.util.Scanner;
  • Il faut créer une String pour contenir les caractères qui seront tapés au clavier :
    String vLigneLue;
  • Ensuite, à chaque fois qu'on écrira l'instruction
    vLigneLue = vScan.nextLine();
    toute la ligne de caractères tapés au clavier sera stockée dans vLigneLue
  • En attendant que des caractères soient tapés au clavier, le programme reste bloqué. Il est donc indispensable de prévenir l'utilisateur de ce qu'on attend de lui, en affichant quelque chose comme "Veuillez taper une commande : " ou plus simplement "> "

2) Comprendre une 2ème utilisation d'un objet Scanner dans la classe Parser de zuul-bad pour analyser une String (scanner une chaîne de caractères mot par mot) :

  • Il faut créer un nouvel objet Scanner en lui passant la String en paramètre :
    Scanner vScan2 = new Scanner( vLigneLue );
  • Pas de problème de compilation puisqu'on a déjà importé la classe Scanner.
  • Pour savoir s'il y a un prochain mot à analyser dans la String, on utilise la fonction booléenne vScan2.hasNext() qui nous renvoie vrai ou faux, selon que vScan2 a ou non trouvé un mot dans la String.
  • S'il en a trouvé un, on le récupère par l'instruction String vMot = vScan2.next();
  • On peut ensuite recommencer pour voir s'il y a un second mot, et ainsi de suite ...
Poser des questions si tout n'est pas clair ci-dessus.
Avatar anonfirstname51 anonlastname51
Re: Exercice 7.2.1
par anonfirstname51 anonlastname51, samedi 2 février 2013, 20:44
 

Juste pour être sur, quand vous parlez de la classe " Scanner " vous voulez dire

" Parser " c'est ça ?

Avatar anonfirstname2 anonlastname2
Re: Exercice 7.2.1
par anonfirstname2 anonlastname2, dimanche 3 février 2013, 22:45
 

Non !  Toute les explications ci-dessus montrent bien l'utilisation de la classe Scanner (qui est présente dans le JDK) et non de la classe Parser (qui a été inventée pour le jeu Zuul).

On peut dire qu'il y a un rapport entre les deux, puisque dans Zuul, la classe Parser déclare puis utilise un objet de la classe Scanner (pour lire les commandes tapées au clavier).

Avatar anonfirstname5 anonlastname5
Re: Exercice 7.2.1
par anonfirstname5 anonlastname5, samedi 16 mars 2013, 16:06
 

Bonjour,

Je ne saisis pas très bien la différence entre la classe Scanner et la classe Parser.
J'ai cependant compris que la classe Parser permet de lire le texte entré par l'utilisateur et de le transformer en commande et que la classe Scanner permet à l'utilisateur de communiquer avec l'application, de lire les données tapées par l'utilisateur dans la console et de les lier aux méthodes concernées.
Pouvez vous m'éclairer sur la différence "d'action" entre ces deux classes ?

Cordialement,

Avatar anonfirstname2 anonlastname2
Re: Exercice 7.2.1
par anonfirstname2 anonlastname2, samedi 16 mars 2013, 16:30
 
  1. La classe Scanner est une classe du JDK (sa Javadoc est fournie par les concepteurs de Java). Elle peut servir à lire les mots ou lignes tapé(e)s au clavier, ou bien à lire des mots ou lignes dans un fichier de texte présent sur le disque dur, ou bien à extraire les différents mots présents dans une longue String.

  2. La classe Parser est une classe du jeu Zuul (voir sa Javadoc fournie par les auteurs du livre). Elle n'a que 2 attributs (dont un Scanner qui lit sur le clavier) et une seule méthode qui renvoit un objet Command (comprenant les 2 mots tapés par le joueur).

La classe Parser (du jeu Zuul) utilise donc la classe Scanner (du JDK) pour lire ce qu'a tapé le joueur et le mettre en forme (en séparant les 2 mots) pour être utilisé plus facilement par le reste du jeu.

N'hésitez pas à poser des questions plus précises si les explications ci-dessus ne vous suffisent pas.